1. Field of the Invention
The present invention relates to an image processing method, and more particularly, to an image denoising method.
2. Description of the Related Art
Image noise is one of critical issues to the quality of an image. However, when the pixel number of an image sensor is increased, the size of a pixel is gradually reduced under the consideration of cost. This causes the noise in the images captured by the image sensor to be amplified inevitably. Therefore, the performance of denoising will gradually be a critical factor in determining the quality of an image.
The method of reconstructing a noisy image to be a denoised image by a filter is named as image reconstruction. FIG. 1 illustrates a noisy image and a denoised image reconstructed from the noisy image. It will be understood that the image reconstruction can be carried out through a processing unit. In general, the processing unit is coupled to a storing unit, which is configured to temporarily store the information arisen in the course of image reconstruction.
Using a neighborhood filter to carry out the image reconstruction is one of the standard techniques. The neighborhood filter determines a weighting according to a similarity between a current pixel and the neighborhood pixels thereof. Afterward, a reconstruction value of the current pixel is obtained by weighted averaging the current pixel and the neighborhood pixels according to the weighting. When all pixels in the noisy image are subjected to the above image reconstruction, a denoised image is obtained. Such a neighborhood filter can be expressed as:
                                          U            ^                    ⁡                      (            x            )                          =                              1                                          N                h                            ⁡                              (                x                )                                              ⁢                                    ∫              ∫                                      R              x                                ⁢                      h            ⁡                          (                              x                ,                y                            )                                ⁢                      U            ⁡                          (              y              )                                ⁢                      ⅆ            y                                              (        1        )            
where U is the noisy image, Nh(x) is the normalization constant, Û is the reconstructed image and Rx is a local neighborhood associated to x. The filtering function h is a monotonically decreasing and depends on the photometric distance between the pixel x and its neighborhood pixel y, for example, on the distance and intensity difference between the current pixel x and the neighborhood pixel y. Referring to FIG. 2, it illustrates a 7×7 neighborhood filtering. An image sensor captures an image I, which is a noisy image. A neighborhood filter will obtain forty-eight (48) weightings according to similarities between a current pixel x and its 48 neighborhood pixels y within the search block Rx around the current pixel x. Afterward, the reconstruction value of the current pixel x is obtained by weighted averaging the gray level of the current pixel x and the gray levels of the 48 neighborhood pixels y according to the weightings. However, the above reconstruction value is obtained by the neighborhood filter according to only the weighted average of the similarities between the pixels. The reconstruction result is always unsatisfactory.
Therefore, a so-called non-local algorithm is submitted to improve the above image reconstruction method. The non-local algorithm is first to determine a weighting according to the similarity between a predetermined-sized current pixel comparison block around a current pixel and a predetermined-sized neighborhood pixel comparison block around one of its neighborhood pixels. The non-local algorithm then obtains the reconstruction value of the current pixel by weighted averaging the gray level of the current pixel and the gray levels of the neighborhood pixels according the weighting. Such non-local algorithm can be expressed as:
                                          NL            ⁡                          [              v              ]                                ⁢                      (            i            )                          =                              ∑                          j              ∈                              R                x                                              ⁢                                    ω              ⁡                              (                                  i                  ,                  j                                )                                      ⁢                          v              ⁡                              (                j                )                                                                        (        2        )            
where NL[v](i) is the reconstruction value of a current pixel i, v(j) is the gray level of one of its neighborhood pixels j before denoised, ω(i,j) is a weighting of the current pixel i and neighborhood pixel j, which determines the similarity between the predetermined-sized current pixel comparison block around the current pixel i and the predetermined-sized neighborhood pixel comparison block around a neighborhood pixel j. The weighting can be expressed as:
                              ω          ⁡                      (                          i              ,              j                        )                          =                              1                          Z              ⁡                              (                ⅈ                )                                              ⁢                      ⅇ                          -                                                                                                                                      v                        ⁡                                                  (                                                      N                            i                                                    )                                                                    -                                              v                        ⁡                                                  (                                                      N                            j                                                    )                                                                                                                                              2                    ,                    a                                    2                                                  h                  2                                                                                        (        3        )            
where |v(Ni)−v(Nj)∥2,a2 is the square of the difference between the gray levels of the predetermined-sized current pixel comparison block around the current pixel i and the predetermined-sized neighborhood pixel comparison block around a neighborhood pixel j, and Z(i) is the normalization constant.
Referring to FIG. 3, it illustrates the non-local algorithm that use a 7×7 search block Rx and a 5×5 comparison block (Ni, Nj), where the image I is a noisy image captured by an image sensor, i is a current pixel, Ni is the predetermined-sized (5×5) current pixel comparison block around the current pixel i, j is a neighborhood pixel of the current pixel i, Nj is the predetermined-sized neighborhood pixel comparison block around the neighborhood pixel j, and Rx is a search block. According to FIG. 3, the weighting between a current pixel i and a neighborhood pixel j depends on the sum of the squares of the twenty-five (25) differences between the pixels in the current pixel comparison block Ni and the corresponding pixels in the neighborhood pixel comparison block Nj. Therefore, forty-eight (48) weightings associated to the search block Rx can be obtained. The reconstruction value of the current pixel i is obtained by weighted averaging the gray levels of the current pixel i and neighborhood pixel j according to the weightings.
In comparison with the neighborhood filtering, the non-local algorithm can be used to obtain satisfied denoising images. However, since the noise can influence the pixels, the non-local algorithm of directly computing the gray levels for two comparison blocks can still not remove all noise in the reconstructed image. In order to improve the above non-local algorithm, the algorithm is slightly modified that the comparison block is first transformed to frequency domain and then the comparison is executed. This is because the noise commonly has dominant high-frequency components in frequency domain. Therefore, the noise can be easily filtered out in frequency-domain before the comparison is executed. However, the above method cannot dynamically adjust related parameters for the characteristics of each pixel. This will lead to poor result of details and being very subject to shock effect or staircasting effect.
The above image reconstruction methods can be referred to the CVPR2005, entitled “A non-local algorithm for image denoising” to Antoni Buades et al. and to the ICIP2007, entitled “Image denoising based on adapted dictionary computation” to Noura Azzabou et al.
In view of the above, the present invention provides an image denoising method that can dynamically adjust the denoising strength, size of search blocks and size of comparison blocks according to the complexity of image so as to conserve much more image details and eliminate the side effect occurred in the conventional methods.